#pragma once

#include "Piece.h"

#define MONO_ROW(color, type) Piece(PieceType::type, PieceColor::color), \
							  Piece(PieceType::type, PieceColor::color), \
							  Piece(PieceType::type, PieceColor::color), \
							  Piece(PieceType::type, PieceColor::color), \
							  Piece(PieceType::type, PieceColor::color), \
							  Piece(PieceType::type, PieceColor::color), \
							  Piece(PieceType::type, PieceColor::color), \
							  Piece(PieceType::type, PieceColor::color)


#define NULL_ROW() MONO_ROW(None, None)

#define MULTI_ROW(color, t1, t2, t3, t4, t5, t6, t7, t8) \
	Piece(PieceType::t1, PieceColor::color), \
	Piece(PieceType::t2, PieceColor::color), \
	Piece(PieceType::t3, PieceColor::color), \
	Piece(PieceType::t4, PieceColor::color), \
	Piece(PieceType::t5, PieceColor::color), \
	Piece(PieceType::t6, PieceColor::color), \
	Piece(PieceType::t7, PieceColor::color), \
	Piece(PieceType::t8, PieceColor::color)

#define BACK_ROW(color) MULTI_ROW(color, Rook, Knight, Bishop, Queen, King, Bishop, Knight, Rook)

__declspec(selectany) Piece DEFAULT_BOARD[] =
{
	BACK_ROW(Black),
	MONO_ROW(Black, Pawn),
	NULL_ROW(),
	NULL_ROW(),
	NULL_ROW(),
	NULL_ROW(),
	MONO_ROW(White, Pawn),
	BACK_ROW(White)
};

__declspec(selectany) byte DEFAULT_COUNTS[] =
{
	1, 1, 2, 2, 2, 8, 
	1, 1, 2, 2, 2, 8
};